package org.mspring.mlog.dao;

import org.mspring.mlog.entity.ArticleEntity;
import org.mspring.nbee.common.PageResult;
import org.mspring.nbee.db.dao.IBaseDao;
import org.mspring.nbee.db.dao.impl.EntitySequenceHandler;

import java.util.List;

/**
 * @author Gao Youbo
 * @since 2014-12-04 17:58:05
 */
public interface ArticleEntityDao extends IBaseDao<ArticleEntity> {
    /**
     * 获取文章的点击次数
     *
     * @param articleId
     * @return
     */
    int getArticleViewCount(long articleId);

    /**
     * 更新文章的点击率
     *
     * @param articleId
     * @param viewCount
     * @return
     */
    boolean updateArticleViewCount(long articleId, int viewCount);

    /**
     * 分类列表
     *
     * @param categoryId
     * @param page
     * @return
     */
    PageResult<Long> findArticleByCategory(long categoryId, int page);

    /**
     * 标签列表
     *
     * @param tagId
     * @param page
     * @return
     */
    PageResult<Long> findArticleByTag(long tagId, int page);

    /**
     * 列出最新发表的文章
     *
     * @param limit
     * @return
     */
    List<ArticleEntity> listLatestArticle(int limit);

    /**
     * 列出热门文章
     *
     * @param limit
     * @return
     */
    List<ArticleEntity> listHotArticle(int limit);

    /**
     * 根据id逐个遍历
     *
     * @param handler
     */
    void listById(EntitySequenceHandler<ArticleEntity> handler);
}
